# 作者:侯征

#定义字典
friends={
    "01":"彭乐",
    "02":"龚志成",
    "03":"曾强刚",
    "04":"汤仁辉",
}
#增加
friends["05"]="崔杰"
#修改
friends["01"]="彭大神"
print(friends)
#删除
friends.pop("03")  #标准删除,建议使用
del friends["05"]  #另一种删除:如果key不存在会报错
friends.popitem()   #随机删除一个
print(friends)
#查找
girls={
    "a":"黄成佳",
    "b":"袁歆雅",
    "c":"石小雅",
}
# 是否存在  ,返回true 或 false
print( "a" in girls )
# 获取value
print ( girls.get("a") )  #没有key返回none
print( girls["c"]  )      #没有key会报错,谨慎使用

#多级嵌套,可以无限嵌套
av_catalog = {
    "欧美":{
        "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
        "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
        "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
        "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
    },
    "日韩":{
        "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
    },
    "大陆":{
        "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
    }
}
#修改
av_catalog["大陆"]["1024"][1]="可以在国内做镜像"
print(av_catalog)

#获取所有key
friends.keys()
#获取所有values
friends.values()
#设默认值,如果可以取到,则取正常值,如果为空取不到,取默认值
friends.setdefault("a","哈哈")
#update: 合并两个字典,如果有key相同的,就更新原来的values,没有就创建
info={
    "001":"哈哈",
    "002":"呵呵",
}
text={
    "001":"嘿嘿",
    "003":"讷讷",
    1:2,
}
info.update(text)
print(info)  # {'003': '讷讷', '002': '呵呵', 1: 2, '001': '嘿嘿'}
#将字典转换为列表,列表中每一个key,values组成一个元组
print(info.items())   #dict_items([('002', '呵呵'), ('003', '讷讷'), ('001', '嘿嘿'), (1, 2)])
#初始化一个字典,前面是key,后面是value,没有value默认是none
# 注意:三个key共享一个内存地址,改变其中一个值,都会改变
c=dict.fromkeys([1,2,3,],{"name":"哈哈"})

#字典循环
#标准,建议使用
for i in info:
    print(i,info[i])
#需要先转,数据量如果很大,效率就慢
for k,v in info.items():
    print(k,v)